package com.company.aicrawlers.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 产品实体类（包含我方产品和竞品）
 *
 * @author AI Crawlers Team
 * @date 2025-10-10
 */
@Data
@TableName(value = "product", autoResultMap = true)
public class Product {
    
    /**
     * 产品ID
     */
    @TableId(type = IdType.AUTO)
    private Long productId;
    
    /**
     * 产品名称
     */
    private String productName;
    
    /**
     * 品牌
     */
    private String brand;
    
    /**
     * 型号
     */
    private String model;
    
    /**
     * 产品类别
     */
    private String category;
    
    /**
     * 关键词列表（JSON数组）
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> keywords;
    
    /**
     * 别名列表（JSON数组）
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> aliases;
    
    /**
     * 产品描述
     */
    private String description;
    
    /**
     * 价格区间（如：3000-4000）
     */
    private String priceRange;
    
    /**
     * 是否我方产品（1:是 0:否，即竞品）
     */
    private Integer isOurProduct;
    
    /**
     * 竞品级别（direct:直接竞品 indirect:间接竞品，仅竞品有效）
     */
    private String competitorLevel;
    
    /**
     * 关注度（high:重点关注 normal:一般关注 low:低关注）
     */
    private String focusLevel;
    
    /**
     * 产品状态（on_sale:在售 discontinued:停售）
     */
    private String productStatus;
    
    /**
     * 记录状态（1:启用 0:禁用）
     */
    private Integer status;
    
    /**
     * 排序序号
     */
    private Integer sortOrder;
    
    /**
     * 备注
     */
    private String remark;
    
    /**
     * 创建人
     */
    private String createBy;
    
    /**
     * 创建时间
     */
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
    
    // ========== 竞品关联信息（非表字段，用于返回关联数据） ==========
    
    /**
     * 竞争类型（direct:直接竞品 indirect:间接竞品 potential:潜在竞品）
     * 仅在查询竞品关联时有值
     */
    @TableField(exist = false)
    private String competitorType;
    
    /**
     * 竞争强度（high:强 medium:中 low:弱）
     * 仅在查询竞品关联时有值
     */
    @TableField(exist = false)
    private String strength;
    
    /**
     * 竞争维度（all:全方位 price:价格 performance:性能 brand:品牌 feature:功能）
     * 仅在查询竞品关联时有值
     */
    @TableField(exist = false)
    private String dimension;
    
    /**
     * 竞品关联排序（仅在查询竞品关联时有值）
     */
    @TableField(exist = false)
    private Integer pcSortOrder;
    
    /**
     * 竞品关联备注（仅在查询竞品关联时有值）
     */
    @TableField(exist = false)
    private String pcRemark;
}

